//声明一个数组
const xiyou = ['唐僧', '孙悟空', '猪八戒', '沙僧']

//使用 for...of 遍历数组
for (let v of xiyou) {
    console.log(v);
}

let iterator = xiyou[Symbol.iterator]()
/*
a) 创建一个指针对象，指向当前数据结构的起始位置
b) 第一次调用对象的 next 方法，指针自动指向数据结构的第一个成员
c) 接下来不断调用 next 方法，指针一直往后移动，直到指向最后一个成员
d) 每调用 next 方法返回一个包含 value 和 done 属性的对象
e) 每调用 next 方法返回一个包含 value 和 done 属性的对象
*/
//调用对象的next方法
console.log(iterator.next())//{ value: '唐僧', done: false } 
console.log(iterator.next())//{ value: '孙悟空', done: false }
console.log(iterator.next())//{ value: '猪八戒', done: false }
console.log(iterator.next())//{ value: '沙僧', done: false }
console.log(iterator.next())//{ value: undefined, done: true }
let arr = ['a', 'b', 'c']
let iter = arr[Symbol.iterator]()
iter.next() // { value: 'a', done: false }
iter.next() // { value: 'b', done: false }
iter.next() // { value: 'c', done: false }
iter.next() // { value: undefined, done: true }
